
package pe.com.bn.sach.mantenimiento.controller;

import org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;



import java.util.Hashtable;
import java.util.List;

import java.sql.Connection;

import pe.com.bn.sach.common.Util;
import pe.com.bn.sach.controller.BaseController;
import pe.com.bn.sach.domain.Bnchf07Item;
import pe.com.bn.sach.domain.Bnchf19Modalidad;
import pe.com.bn.sach.mantenimiento.form.ModalidadForm;

import pe.com.bn.sach.service.MantenimientoService;
import pe.com.bn.sach.service.SelectService;


public class ModalidadController extends BaseController {

	
	
    private String listar;
    Bnchf19Modalidad bnchf19Modalidad = new Bnchf19Modalidad();
    private MantenimientoService servicioMantenimiento;
    private SelectService servicioSelect;
    private String commandName;
    private Class commandClass;
    /** Logger for this class and subclasses */    
    protected final Log logger = LogFactory.getLog(getClass());
    public ModalidadController()
    {
        ParameterMethodNameResolver resolver = new ParameterMethodNameResolver();
        resolver.setParamName("method");
        resolver.setDefaultMethodName("cargaListaModalidad");
        setMethodNameResolver(resolver);
    }

    // INICIO MANTENIMIENTO    
    public Bnchf19Modalidad formBuscarInit(HttpServletRequest request) {
    	
    	Bnchf19Modalidad bnchf19Modalidad=new Bnchf19Modalidad();
    	bnchf19Modalidad.setF19IdModalidad(Util.copyLongc("0"));    	
    	bnchf19Modalidad.setF19DescModalidad(null);
    	

    	
    	return bnchf19Modalidad;
    }
    
    
    
    
    /* busca notaria  ini */
    public Bnchf19Modalidad formBuscar(HttpServletRequest request) {
    	
    	
    	Bnchf19Modalidad bnchf19Modalidad=new Bnchf19Modalidad();
    	bnchf19Modalidad.setF19IdModalidad(Util.copyLongc(request.getParameter("txtCodigoModalidad")));
    	
    	bnchf19Modalidad.setF19DescModalidad(""+request.getParameter("txtDescModalidad"));    	
    
    	return bnchf19Modalidad;
    }
    /* busca notaria ini */
    public ModelAndView cargaListaModalidad(HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {
    	
    	
		ModelAndView mav = new ModelAndView("mantenimiento/modalidad/mod_BuscarModalidad");
		Connection cnx =null;
		try {
			bnchf19Modalidad=formBuscarInit(request);
			mav.addObject("listarModalidad",servicioMantenimiento.listarModalidad(bnchf19Modalidad));
			Bnchf07Item bnchf07Item=new Bnchf07Item();
	  		bnchf07Item.getId().getBnchf06Tabla().setF06IdTabla(Util.copyLong("4")); //doc
			cnx = getPoolConnection();
				try {
					mav.addObject("ListTipoDocumento",servicioSelect.listItem(bnchf07Item));
					freePoolConnection(cnx);
				} catch (Exception e1) {
					e1.printStackTrace();
		    	}finally{
		    		if(cnx!=null)
		    		freePoolConnection(cnx);
		    	}	  			
	  			
	  			
		} catch (Exception e) {
			mav = new ModelAndView("mantenimiento/centroHipotecario/cen_BuscarCentroHipotecario");
			mav.addObject("ERROR_MSG",(String)" Error al cargar lista de modalidad	"+e);

		}		
		return mav;
    }

    
    public ModelAndView cargaListaModalidadAjax(HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {
    	
		ModelAndView mav = new ModelAndView("mantenimiento/modalidad/mod_BuscarModalidadAjax");
		
		try {
			bnchf19Modalidad=formBuscar(request);

				
					mav.addObject("listarModalidad",servicioMantenimiento.listarModalidad(bnchf19Modalidad));
					  			
				
				
		} catch (Exception e) {
			bnchf19Modalidad=formBuscarInit(request);

				mav.addObject("listarModalidad",servicioMantenimiento.listarModalidad(bnchf19Modalidad));
	    	
			
		}
		
		return mav;
    }
    
    public ModelAndView nuevo(HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {
    	
		ModelAndView mav = new ModelAndView("mantenimiento/modalidad/mod_RegistrarModalidad");
		mav=select(mav);
		return mav;
    }

    public ModelAndView select(ModelAndView mav)
    throws Exception   
    {	
    	
    	
    	Bnchf07Item bnchf07Item=new Bnchf07Item();
    	mav.addObject("ListDepartamento",servicioSelect.listUbigeoDepartamento());
    	
  		bnchf07Item.getId().getBnchf06Tabla().setF06IdTabla(Util.copyLong("4")); // 02 sexo
  		mav.addObject("ListTipoDocumento",servicioSelect.listItem(bnchf07Item));    	  
    	bnchf07Item.getId().getBnchf06Tabla().setF06IdTabla(Util.copyLong("7")); // Inmueble    	
  		mav.addObject("ListZona",servicioSelect.listItem(bnchf07Item));
  		bnchf07Item.getId().getBnchf06Tabla().setF06IdTabla(Util.copyLong("21")); // Inmueble
  		mav.addObject("ListVia",servicioSelect.listItem(bnchf07Item));
  		bnchf07Item.getId().getBnchf06Tabla().setF06IdTabla(Util.copyLong("22")); // Inmueble
  		mav.addObject("ListExterior",servicioSelect.listItem(bnchf07Item));
  		bnchf07Item.getId().getBnchf06Tabla().setF06IdTabla(Util.copyLong("23")); // Inmueble
  		mav.addObject("ListInterior",servicioSelect.listItem(bnchf07Item));
  		bnchf07Item.getId().getBnchf06Tabla().setF06IdTabla(Util.copyLong("7")); // ubicacion
  		mav.addObject("ListUbicacion",servicioSelect.listItem(bnchf07Item));
  		
  		bnchf07Item.getId().getBnchf06Tabla().setF06IdTabla(Util.copyLong("33")); // ListEstado
  		mav.addObject("ListEstado",servicioSelect.listItem(bnchf07Item));
  		
  		// ListEstado
  		 
    	return mav;
    }
    
    
    

    
    public ModelAndView encontrarModalidad(HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {    	 
    	ModelAndView mav = new ModelAndView();
    	
		try {
			
			if(request.getParameter("txtOpcion").equals("bajar"))  	
		    	mav = new ModelAndView("mantenimiento/modalidad/mod_BajaModalidad"); // contular-modificar-bajar
		    	if(request.getParameter("txtOpcion").equals("consultar"))
		    	mav = new ModelAndView("mantenimiento/modalidad/mod_ConsultaModalidad"); // contular-modificar-bajar
		    	if(request.getParameter("txtOpcion").equals("modificar"))
		    	mav = new ModelAndView("mantenimiento/modalidad/mod_ModificarModalidad"); // contular-modificar-bajar
		    	
		    	Hashtable ht=new Hashtable(); 
		    	if(request.getParameter("txtOpcion").equals("destino")){    		
		    		Long idMoalidad=new Long(""+Util.copyLong(""+""+request.getParameter("optSeleccion")));    		
		    	
		    		mav = new ModelAndView("mantenimiento/modalidad/mod_DestinoModalidad"); // contular-modificar-bajar

		    		ht=servicioMantenimiento.listarDestinoModalidad(idMoalidad);
		    		
		    		//ListModalidadFaltaAsingar
		    		mav.addObject("listarDestinoModalidadFaltaAsingar",(List)ht.get("ListModalidadFaltaAsingar"));    		
		    		mav.addObject("listarDestinoModalidadAsignados",(List)ht.get("ListDestinoModalidadAsignados"));
		    	}
		    	//destino
		    	Bnchf19Modalidad bnchf19Modalidad=new Bnchf19Modalidad();
		    	bnchf19Modalidad.setF19IdModalidad(Util.copyLong(""+""+request.getParameter("optSeleccion")));
		    	
		    	mav.addObject("Modalidad",servicioMantenimiento.encontrarModalidad(bnchf19Modalidad));
		    	
		} catch (Exception e) {
			// TODO: handle exception
			logger.error("		"+e);
			mav = new ModelAndView("mantenimiento/centroHipotecario/cen_BuscarCentroHipotecario");
			mav.addObject("ERROR_MSG",(String)" Error al encontrar modalidad	"+e);

		}
    	
    	mav=select(mav); 
    	return mav;
    } 
     
    Bnchf19Modalidad getForm(ModalidadForm institucionForm){
    	
    	Bnchf19Modalidad bnchf19Modalidad=new Bnchf19Modalidad();
    	//F19_ID_USUA_CREA txtIdModalidad 
    	bnchf19Modalidad.setF19IdModalidad(Util.copyLong(""+institucionForm.getTxtIdModalidad()));
    	bnchf19Modalidad.setF19DescModalidad(Util.copyString(""+institucionForm.getTxtDescModalidad()));
    
    	bnchf19Modalidad.setF19IdUsuaCrea("1");
    	return bnchf19Modalidad;
    	
		}
    public ModelAndView guardarModalidad(HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {   	
    	
    	
    	
    	
    	ModelAndView mav = new ModelAndView("mantenimiento/modalidad/mod_BuscarModalidad");
    	Connection cnx =null;
		try {
			
				Object command = getCommandObject(request); 		
		 		ModalidadForm institucionForm=new ModalidadForm (); 		
				institucionForm = (ModalidadForm)command;	
		    	bnchf19Modalidad=new Bnchf19Modalidad();    	
		    	bnchf19Modalidad=getForm(institucionForm);

				cnx = getPoolConnection();
				try {
					mav.addObject("Msj",servicioMantenimiento.guardarModalidad(bnchf19Modalidad,cnx));
					if(cnx!=null)
						cnx.commit();
					if(cnx!=null){
						cnx.commit();
						freePoolConnection(cnx);
						
					}
				} catch (Exception e1) {
					e1.printStackTrace();
		    	}finally{
		    		if(cnx!=null){
						cnx.commit();
						freePoolConnection(cnx);
						
					}
					
		    		
		    	}	  			
		    	
		    	
		    	
			
		} catch (Exception e) {
			// TODO: handle exception
			logger.error(" Error "+e);
			mav = new ModelAndView("mantenimiento/centroHipotecario/cen_BuscarCentroHipotecario");
			mav.addObject("ERROR_MSG",(String)" Error al grabar   modalidad	"+e);

		}
    	
    	return cargaListaModalidad(request,response);
    }

    public ModelAndView modificarModalidad(HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {   	
    	
    	
    	ModelAndView mav = new ModelAndView("mantenimiento/modalidad/mod_BuscarModalidad");
    	Connection cnx =null;
    	try {
	     		Object command = getCommandObject(request); 		
	     		ModalidadForm institucionForm=new ModalidadForm (); 		
	    		institucionForm = (ModalidadForm)command;		
	        	
	        	bnchf19Modalidad=new Bnchf19Modalidad();    	
	        	bnchf19Modalidad=getForm(institucionForm);
				cnx = getPoolConnection();
				try {
					mav.addObject("Msj",servicioMantenimiento.modificarModalidad(bnchf19Modalidad,cnx));
					if(cnx!=null){
						cnx.commit();
						freePoolConnection(cnx);	
					}
						
				} catch (Exception e1) {
					e1.printStackTrace();
		    	}finally{
		    		if(cnx!=null){
						cnx.commit();
						freePoolConnection(cnx);	
					}
		    	}	  				        	
	        	
	        	
		} catch (Exception e) {
			// TODO: handle exception
			logger.error(e+"");
			mav = new ModelAndView("mantenimiento/centroHipotecario/cen_BuscarCentroHipotecario");
			mav.addObject("ERROR_MSG",(String)" Error al modificar  modalidad	"+e);

		}
    	
		return cargaListaModalidad(request,response);
    }

    public ModelAndView bajarModalidad(HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {   	
    	
    	ModelAndView mav = new ModelAndView("mantenimiento/modalidad/mod_BuscarModalidad");
    	Connection cnx =null;
    		try {
    	 		Object command = getCommandObject(request); 		
    	 		ModalidadForm institucionForm=new ModalidadForm (); 		
    			institucionForm = (ModalidadForm)command;		
    	    	 	
    	    	bnchf19Modalidad=new Bnchf19Modalidad();  	
    	    	bnchf19Modalidad=getForm(institucionForm);

				cnx = getPoolConnection();
				try {
					mav.addObject("Msj",servicioMantenimiento.bajarModalidad(bnchf19Modalidad,cnx));
					if(cnx!=null){
						cnx.commit();
						freePoolConnection(cnx);
					}
						
				} catch (Exception e1) {
					e1.printStackTrace();
		    	}finally{
		    		if(cnx!=null){
						cnx.commit();
						freePoolConnection(cnx);
					}
		    	}	  				        	
		    	
    	    	
    	    	
			} catch (Exception e) {
				// TODO: handle exception
				logger.error(""+e);
				mav = new ModelAndView("mantenimiento/centroHipotecario/cen_BuscarCentroHipotecario");
				mav.addObject("ERROR_MSG",(String)" Error al bajar  modalidad	"+e);

			}
    	
    	return cargaListaModalidad(request,response);
    }
    


    // FIN MANTENIMIENTO
    
    
    
    
	/**
	 * @return Devuelve commandName.
	 */
	public String getCommandName() {
		return commandName;
	}
	/**
	 * @param commandName El commandName a establecer.
	 */
	public void setCommandName(String commandName) {
		this.commandName = commandName;
	}
	
	/**
	 * @return Devuelve commandClass.
	 */
	public Class getCommandClass() {
		return commandClass;
	}
	/**
	 * @param commandClass El commandClass a establecer.
	 */
	public void setCommandClass(Class commandClass) {
		this.commandClass = commandClass;
	}
	/**
	 * @return Devuelve servicioMantenimiento.
	 */
	public MantenimientoService getServicioMantenimiento() {
		return servicioMantenimiento;
	}
	/**
	 * @param servicioMantenimiento El servicioMantenimiento a establecer.
	 */
	public void setServicioMantenimiento(
			MantenimientoService servicioMantenimiento) {
		this.servicioMantenimiento = servicioMantenimiento;
	}
	/**
	 * @return Devuelve servicioSelect.
	 */
	public SelectService getServicioSelect() {
		return servicioSelect;
	}
	/**
	 * @param servicioSelect El servicioSelect a establecer.
	 */
	public void setServicioSelect(SelectService servicioSelect) {
		this.servicioSelect = servicioSelect;
	}
	
    public Object getCommandObject(HttpServletRequest request)
    throws Exception
    {
    Object command = formBackingObject(request);
    bind(request, command);
    return command;
    }
    protected Object formBackingObject(HttpServletRequest request)
    throws Exception
    {
        return commandClass.newInstance();
    }

    
	
}
